//! 给你一个 升序排列 的数组 nums ，请你 原地 删除重复出现的元素，使每个元素 只出现一次 ，返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
//! 考虑 nums 的唯一元素的数量为 k ，你需要做以下事情确保你的题解可以被通过：
//! 更改数组 nums ，使 nums 的前 k 个元素包含唯一元素，并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
//! 返回 k 。
pub fn remove_duplicates(nums: &mut Vec<i32>) -> i32 {
    if nums.len()<2 {
        return nums.len() as i32;
    }

    let mut left=0_usize;
    let mut right=0_usize;
    while right < nums.len() {
        if nums[left] >= nums[right] {
            right += 1;
            continue;
        }
        nums[left+1] = nums[right];
        left +=1;
        right +=1;

    }
    left as i32+1
}

#[cfg(test)]
mod test {

    use super::*;

    #[test]
    fn test1(){
        let mut nums = vec!(0,0,1,1,1,2,2,3,3,4);
        let count = remove_duplicates(&mut nums);
        println!("数组={:?}, count={}", nums , count);

        let mut nums = vec!(1, 1, 2);
        let count = remove_duplicates(&mut nums);
        println!("数组={:?}, count={}", nums , count);
    }

}